package study.java.thread03;

/**
* @Name: SellTicketRunnableDemo
* @Description: 多线程练习题测试类
* 练习：
* 	某电影院目前正在上映贺岁大片，共有100张票，而它有3个售票口，设计实现模拟该电影院售票
* 出现的问题：
* 	1、相同的票出现了多次
* 		由CPU操作的原子性造成
* 	2、出现类负数的票
* 		由多线程执行的随机性及延迟造成
* 注意：
* 	线程安全问题在理想状态下，不容易出现，但是一旦出现对软件的影响非常大。
* 如何解决线程安全问题：
* 	判断一个程序是否会存在线程安全问题的标准
* 		1、是否是多线程环境；	是
* 		2、是否有共享数据；	是
* 		3、是否有多条语句操作共享数据；	是
* 	解决思路：
* 		1和2无法解决，从3下手；
* 			把多条语句操作共享数据的代码包成一个整体，保证共享代码操作的原子性。
* 	解决办法：
* 		使用java提供的同步机制。
* 		同步代码块：
* 			synchronized(对象-锁) {
* 				需要同步的代码块；
* 			}
* 		注意：同步可以解决安全问题的根本就在于那个对象上，该对象如同锁的功能，要求多个线程必须是同一把锁。
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-8 下午10:09:08 
* @Version: V1.0
 */
public class SellTicketRunnableDemo02 {
	
	public static void main(String[] args) {
		SellTicketRunnable st = new SellTicketRunnable() ;
		Thread t1 = new Thread(st, "窗口1") ;
		Thread t2 = new Thread(st, "窗口2") ;
		Thread t3 = new Thread(st, "窗口3") ;
		t1.start() ;
		t2.start() ;
		t3.start() ;
	}

}
